var Utils = new Object();

Utils.$$ = function(id) {
	return document.getElementById(id);
}

Utils.isEmpty = function(val) {
	switch (typeof(val)) {
		case 'string' :
			return (val != "" && val.length > 0) ? false : true;
			break;
		case 'object' :
			return (val != null) ? false : true;
			break;
		case 'array' :
			return (val.length) > 0 ? false : true;
			break;
		case 'number' :
			return false;
			break;
		default :
			return true;
	}
}

Utils.chkStrCode = function(str) {
	for (var i = 0; i < str.length; i++) {
		if (str.charCodeAt(i) < 127 && !str.substr(i, 1).match(/^\w+$/ig)) {
			return false;
		}
	}
	
	return true;
}

Utils.isNumber = function(val) {
	var reg = /^[\d|\.|,]+$/;
	return reg.test(val);
}

Utils.isInt = function(val) {
	if (val == "") {
		return false;
	}

	var reg = /\D+/;
	return !reg.test(val);
}

Utils.isEmail = function(email) {
	var reg1 = /([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)/;

	return reg1.test(email);
}

Utils.isMobile = function(mobile) {
	var reg = /^(?:13\d|15[89])-?\d{5}(\d{3}|\*{3})$/;
	
	return reg.test(Utils.trim(mobile));
}

Utils.isTel = function(tel) {
	// 兼容格式: 国家代码(2到3位)-区号(2到3位)-电话号码(7到8位)-分机号(3位)
	var reg = /^(([0\+]\d{2,3}-)?(0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/;
	
	return reg.test(Utils.trim(tel));
}

Utils.isTime = function(val) {
	var reg = /^\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}$/;

	return reg.test(val);
}

Utils.htmlEncode = function(text) {
	return text.replace(/&/g, '&amp;').replace(/"/g, '&quot;').replace(/</g,
			'&lt;').replace(/>/g, '&gt;');
}

Utils.trim = function(text) {
	if (typeof(text) == "string") {
		return text.replace(/^\s*|\s*$/g, "");
	} else {
		return text;
	}
}

/**
 * 测试某个字符是属于哪一类
 * 
 * @param {}
 *            iN
 * @return {Number}
 */
Utils.charMode = function(code) {
	// 数字
	if (code >= 48 && code <= 57)
		return 1;
	// 大写字母
	if (code >= 65 && code <= 90)
		return 2;
	// 小写
	if (code >= 97 && code <= 122)
		return 4;
	// 其它特殊字符
	else
		return 8;
}

/**
 * 计算出当前密码当中一共有多少种模式
 * 
 * @param {}
 *            num
 * @return {}
 */
Utils.bitTotal = function(num) {
	var modes = 0;

	for (i = 0; i < 4; i++) {
		if (num & 1)
			modes++;
		num >>>= 1;
	}

	return modes;
}

/**
 * 返回密码的强度级别
 * 
 * @param {}
 *            sPW
 * @return {Number}
 */
Utils.checkStrong = function(pwd) {
	if (pwd.length <= 4)
		return 0; // 密码太短

	var modes = 0;

	for (i = 0; i < pwd.length; i++) {
		// 测试每一个字符的类别并统计一共有多少种模式
		modes |= Utils.charMode(pwd.charCodeAt(i));
	}

	return Utils.bitTotal(modes);
}

/**
 * 拆分字符串
 * @param {} str
 * @param {} sp 拆分符
 * @return {} 返回空或数组
 */
Utils.splitStr = function(str, sp) {
	if (str != null && str != "" && str.length > 0) {
		return str.split(sp);
	}

	return null;
}

Utils.subZeroAndDot = function(str) {
	if(str.indexOf(".") > 0){  
	    str = str.replace(new RegExp("0+$"), "");//去掉多余的0
	    str = str.replace(new RegExp("[.]$"), "");//如最后一位是.则去掉  
      }  
    return str;  
}

/**
 * 获得两个日期差（毫秒值）
 * @param {} date1
 * @param {} date2
 * @return {}
 */
Utils.compareTwoDate = function(date1, date2){
	if(date1 != null && date2 != null){
		var millseconds = (date1.getTime() - date2.getTime()) / 1000;
		
		return millseconds;
	}else{
		return 0;
	}
}